-- @Author: 作者QQ381990860
-- @Date:   2021-11-05 10:34:34
-- @Last Modified by:   作者QQ381990860
-- @Last Modified time: 2022-07-23 06:58:59

local 交易界面 = class(窗口逻辑)
local bw = require("gge包围盒")(0,0,173,20)
local box = 引擎.画矩形
local insert = table.insert
local mouseb = 引擎.鼠标弹起
local tp,zts,zts1

local sts = {"己方支付银两","对方支付银两"}

function 交易界面:初始化(根)
	self.ID = 55
	self.x = 150
	self.y = 70
	self.xx = 0
	self.yy = 0
	self.注释 = "玩家给与"
	self.可视 = false
	self.鼠标 = false
	self.焦点 = false
	self.焦点1 = false
	self.可移动 = true
	local 资源 = 根.资源
	local 按钮 = 根._按钮
	local 自适应 = 根._自适应
	self.资源组 = {
		[1] = 自适应.创建(0,1,500,359,3,9),
		[2] = 按钮.创建(自适应.创建(11,4,67,20,1,3),0,0,4,true,true," 交 易"),
		[3] = 按钮.创建(自适应.创建(11,4,67,20,1,3),0,0,4,true,true," 取 消"),
		[4] = 按钮.创建(自适应.创建(18,4,16,16,4,3),0,0,4,true,true),
		[5] = 按钮.创建(资源:载入('JM.dll',"网易WDF动画",0xFF205590),0,0,1,true,true),
		[6] = 按钮.创建(资源:载入('JM.dll',"网易WDF动画",0xFF205590),0,0,1,true,true),
		[7] = 按钮.创建(自适应.创建(11,4,72,20,1,3),0,0,4,true,true," 物 品"),
		[8] = 按钮.创建(自适应.创建(11,4,72,20,1,3),0,0,4,true,true," 召唤兽"),

		[11] = 自适应.创建(3,1,52,18,1,3),
		[12] = 自适应.创建(7,1,190,235,3,9),

	 }

	self.资源组[5]:置偏移(-3,2)
	self.资源组[6]:置偏移(-3,2)
	self.控件类 = require("ggeui/加载类")()
	local 总控件 = self.控件类:创建控件('创建控件')
	总控件:置可视(true,true)
	self.输入框 = 总控件:创建输入("银两给予",122,39,80,14,根)
	self.输入框:置限制字数(8)
	self.输入框:置数字模式()
	self.输入框:置光标颜色(0xFF000000)
	self.数量输入 ={}
    self.给予物品={}
    self.物品数据={}
    self.对方物品={}
    self.选中编号={}
    self.选中召唤兽={}
	local 格子 = 根._物品格子
	for i=1,20 do
	  self.物品数据[i] = 格子.创建(0,0,i,"给予物品")
	end
	for i=1,3 do
		self.数量输入[i] = 总控件:创建输入("数量输入"..i,i*54-20,125,25,14,根)
		self.数量输入[i]:置可视(false,false)
		self.数量输入[i]:置限制字数(3)
		self.数量输入[i]:置数字模式()
		self.数量输入[i]:置文字颜色(0xFF000000)
		self.给予物品[i] = 格子.创建(0,0,i,"选中物品")
		self.对方物品[i] = 格子.创建(0,0,i,"对方物品")
	    self.选中编号[i] = 0
		self.选中召唤兽[i] = 0
	end
	self.窗口时间 = 0
	tp = 根
	zts = 根.字体表.普通字体
	zts1 = 根.字体表.描边字体
  self.状态=1

 self.交易数据={}
 self.锁定 = false
self.自我锁定 = false
end

function 交易界面:刷新道具(数据)
	self.本类数据.道具=数据.道具
	self.状态=1
end
function 交易界面:刷新召唤兽(数据)
 self.召唤兽数据=数据
	self.状态=9
end

function 交易界面:打开(数据)
	if self.可视 then
		客户端:发送数据(self.本类数据.id, 6, 35, "P7", 1)
		self.可视 = false
		self.状态=1
		self.输入框:置焦点(false)
		self.输入框:置可视(false,false)
		self.输入框:置文本(0)
		self.锁定 = false
		self.自我锁定 = false
		for i=1,3 do
		self.数量输入[i]:置焦点(false)
		self.数量输入[i]:置可视(false,false)
		self.数量输入[i]:置文本(1)
		self.给予物品[i]:置物品(nil)
		self.对方物品[i]:置物品(nil)
		self.选中编号[i] = 0
		self.选中召唤兽[i] = 0
		end
		for i=1,20 do
			self.物品数据[i]:置物品(nil)
		end
	else
		if  self.x > 全局游戏宽度 then
		self.x = 150
		end

		self.状态=1
		self.输入框:置焦点(false)
		self.输入框:置可视(false,false)
		self.输入框:置文本(0)
		self.锁定 = false
		self.自我锁定 = false
		for i=1,3 do
		self.数量输入[i]:置焦点(false)
		self.数量输入[i]:置可视(false,false)
		self.数量输入[i]:置文本(1)
		self.给予物品[i]:置物品(nil)
		self.对方物品[i]:置物品(nil)
		self.选中编号[i] = 0
		self.选中召唤兽[i] = 0
		end
        self.本类数据=数据
        self.本类数据.id=self.本类数据.id+0
		for i=1,20 do
			if self.本类数据.道具[i]~=nil then
			self.物品数据[i]:置物品(self.本类数据.道具[i])
		    end
         end
		insert(tp.窗口_,self)
		tp.运行时间 = tp.运行时间 + 1
	    self.窗口时间 = tp.运行时间
		self.可视 = true
	end
end

function 交易界面:刷新交易数据(数据)
    self.交易数据=数据
    for i=1,3 do
    self.对方物品[i]:置物品(self.交易数据.道具[i])
    end
	self.锁定 = true
end


function 交易界面:显示(dt,x,y)
	self.焦点 = false
	self.焦点1 = nil

	self.资源组[1]:显示(self.x,self.y)

  self.资源组[4]:显示(self.x+self.资源组[1].宽度-20,self.y+3)
  tp.窗口标题背景_:显示(self.x+self.资源组[1].宽度/2-73,self.y)
  zts1:显示(self.x+self.资源组[1].宽度/2-15,self.y+1,"交易")



	self.资源组[2]:显示(self.x+260,self.y+322,true,1)
	self.资源组[2]:更新(x,y)
	self.资源组[3]:显示(self.x+370,self.y+322,true,1)
	self.资源组[3]:更新(x,y)
	self.资源组[4]:更新(x,y)
	self.资源组[5]:更新(x,y)

	self.资源组[7]:显示(self.x+260,self.y+40,true,1,nil,self.状态==1,2)
  	self.资源组[7]:更新(x,y)
	self.资源组[8]:显示(self.x+370,self.y+40,true,1,nil,self.状态==9,2)
	self.资源组[8]:更新(x,y)
	self.资源组[6]:置打勾框(self.锁定)
	self.资源组[5]:置打勾框(self.自我锁定)

	for i=0,1 do
		zts:置颜色(0xFFFFFFFF)
		self.资源组[11]:置宽高(100,18)
		self.资源组[11]:显示(self.x+115,self.y+37+i*196)
		zts:显示(self.x+20,self.y+40+i*196,sts[i+1])
	end


	if self.资源组[4]:事件判断() or self.资源组[3]:事件判断() then
		self:打开()
	elseif self.资源组[2]:事件判断() then
		客户端:发送数据(self.本类数据.id, 6, 34, "P7", 1)
	elseif self.资源组[5]:事件判断() then
   self.文本信息 = ""
	for n = 1, #self.选中编号, 1 do
		self.文本信息 = self.文本信息 .. self.选中编号[n] .. "*-*"
	end
	self.文本信息 = self.文本信息 .. "@-@"
	for n = 1, #self.选中召唤兽, 1 do
		self.文本信息 = self.文本信息 .. self.选中召唤兽[n] .. "*-*"
	end
	self.文本信息 = self.文本信息 .. "@-@"
		客户端:发送数据(self.本类数据.id, self.输入框:取文本()+0, 33, self.文本信息, 7)
		self.自我锁定 =true
	elseif self.资源组[7]:事件判断() then
		客户端:发送数据(self.本类数据.id, 14, 31, "P7", 1)
	elseif self.资源组[8]:事件判断() then
		客户端:发送数据(self.本类数据.id, 6, 32, "P7", 1)
	end

	if self.状态==1 then

	tp.物品格子背景_:显示(self.x+230,self.y+87)


    for i=0,2 do
        tp.单物品格子:显示(self.x+18+i*56,self.y+64)
        tp.单物品格子:显示(self.x+18+i*56,self.y+261)
        self.资源组[11]:置宽高(52,18)
        self.资源组[11]:显示(self.x+18+i*56,self.y+122)
        self.资源组[11]:显示(self.x+18+i*56,self.y+320)
    end

		local xx = 0
		local yy = 0
		for i=1,20 do
		self.物品数据[i]:置坐标(self.x + xx * 51 + 231,self.y + yy * 51 + 85)
		self.物品数据[i]:显示(dt,x,y,self.鼠标)--下面修复
		if self.物品数据[i].物品 ~= nil and self.物品数据[i].焦点 then
			tp.提示:道具行囊(x,y,self.物品数据[i].物品,nil,true)
			if self.物品数据[i].事件 and self.自我锁定 ==false then
				for o=1,3 do
				  if self.给予物品[o].物品 == nil  then
				  self.给予物品[o]:置物品(self.本类数据.道具[i])
				  self.物品数据[i]:置物品(nil)
				  self.数量输入[o]:置可视(true,true)
				  self.选中编号[o] = i
					break
				  end
				end
		     end
		end
		xx = xx + 1
		if xx == 5 then
			xx = 0
			yy = yy + 1
		end
		end
		for i=1,3 do
		self.数量输入[i]:置坐标(self.x+i*1,self.y)
		self.给予物品[i]:置坐标(self.x+i*56-36,self.y +63)
		self.给予物品[i]:显示(dt,x,y,self.鼠标)
		if self.数量输入[i]._已碰撞 then
		self.焦点 = true
		end
		if self.给予物品[i].物品 ~= nil then
		    if self.数量输入[i]:取文本() == "" then
			self.数量输入[i]:置文本(1)
		    end
			if  self.本类数据.道具[self.选中编号[i]].数量 ~= nil then
		        self.数量输入[i]:置文本(self.本类数据.道具[self.选中编号[i]].数量)
		         else
		   	   self.数量输入[i]:置文本(1)
		    end
			if self.给予物品[i].焦点 then
			tp.提示:道具行囊(x,y,self.给予物品[i].物品,true)
				if  (self.给予物品[i].事件 or self.给予物品[i].右键 )and self.自我锁定 == false then
					self.物品数据[self.选中编号[i]]:置物品(self.本类数据.道具[self.选中编号[i]])
					self.选中编号[i] = 0
					self.给予物品[i]:置物品(nil)
					self.数量输入[i]:置可视(false,false)
				end
		     end
		 end
		end
		self.资源组[5]:显示(self.x+190,self.y+70)
		self.资源组[6]:显示(self.x+190,self.y+265)
		if self.锁定 then
			for i=1,3 do
			self.对方物品[i]:置坐标(self.x +i *56-36,self.y +259)
			self.对方物品[i]:显示(dt,x,y,self.鼠标)
			zts1:置颜色(引擎.取金钱颜色(self.交易数据.银两))
			zts1:置字间距(2)
			zts1:显示(self.x+125,self.y+235,self.交易数据.银两)
			zts1:置字间距(0)
				if self.对方物品[i].焦点 then
				tp.提示:道具行囊(x,y,self.对方物品[i].物品,true)
				end
			end
	  end



	elseif self.状态 == 9 then

    for i=0,2 do
        self.资源组[11]:置宽高(190,18)
        self.资源组[11]:显示(self.x+25,self.y+65+i*25)
        self.资源组[11]:显示(self.x+25,self.y+262+i*25)
    end

        self.资源组[12]:显示(self.x+265,self.y+75)

		local 序号 = 0
		for i=1,3 do
		self.数量输入[i]:置可视(false,false)
		end
	for i=1,#self.召唤兽数据 do
		if  i~=self.选中召唤兽[1] and i~=self.选中召唤兽[2] and i~=self.选中召唤兽[3] then
		序号 = 	序号+1
		zts:置颜色(0xFF000000)
		local jx = self.x+270
		local jy = self.y+64+序号*20
		bw:置坐标(jx-4,jy-3)
		if bw:检查点(x,y) then
			box(jx-5,jy-6,jx+173,jy+15,-3551379)
			self.焦点 = true
			self.焦点1 = true
			if mouseb(0) and self.鼠标 and not tp.消息栏焦点 and self.自我锁定 == false  then
				  for o=1,3 do
				  if self.选中召唤兽[o] == 0 then
				 self.选中召唤兽[o] = i
				  break
				  end
				  end

			elseif mouseb(1) and self.鼠标 and not tp.消息栏焦点 then
					self.焦点 = true
			        self.焦点1 = true
				tp.窗口.召唤兽查看栏:打开(self.召唤兽数据[i])
			end
		end
		zts:显示(jx,jy-2,self.召唤兽数据[i].名称)
	 end
	end
	    local 显示序列 = 0
    for n=1,3 do
      if self.选中召唤兽[n]~=0 then
      显示序列=显示序列+1
      zts:置颜色(0xFF000000)
      zts:显示(self.x+43,self.y+75+显示序列*25-33,self.召唤兽数据[self.选中召唤兽[n]].名称)
      bw:置坐标(self.x+38,self.y+73+显示序列*25-33)
        if bw:检查点(x,y) then
          if 引擎.鼠标弹起(1)  then
          	self.焦点 = true
			 self.焦点1 = true
          	tp.窗口.召唤兽查看栏:打开(self.召唤兽数据[self.选中召唤兽[n]])
          elseif 引擎.鼠标弹起(0) and  self.自我锁定==false then
          self.选中召唤兽[n]=0
          end
        end
      end
    end
		self.资源组[5]:显示(self.x+218,self.y+70)
		self.资源组[6]:显示(self.x+218,self.y+265)
		if self.锁定 then
			zts1:置颜色(引擎.取金钱颜色(self.交易数据.银两))
			zts1:置字间距(2)
			zts1:显示(self.x+125,self.y+235,self.交易数据.银两)
			zts1:置字间距(0)
			zts1:置颜色(0xFFFFFFFF)
			if self.交易数据.召唤兽~= nil then
				for i=1,#self.交易数据.召唤兽 do
					zts:置颜色(0xFF000000)
					zts:显示(self.x+43,self.y+272+i*25-33,self.交易数据.召唤兽[i].名称)
					bw:置坐标(self.x+38,self.y+270+i*25-33)
					if bw:检查点(x,y) then
					if 引擎.鼠标弹起(1)  then
					self.焦点 = true
			        self.焦点1 = true
					tp.窗口.召唤兽查看栏:打开(self.交易数据.召唤兽[i])
					end
				end
			 end
			end

	    end
	end

	zts:置颜色(0xFFFFFFFF)
	zts:显示(self.x+20,self.y+198,"等级:")
	zts:显示(self.x+105,self.y+198,"关系:")
	zts:显示(self.x+20,self.y+170,"正在与玩家              交易")

	zts:置颜色(0xFFFFFF00)
	zts:显示(self.x+57,self.y+198,self.本类数据.等级)
	zts:显示(self.x+145,self.y+198,"陌生人")
	zts:显示(self.x+95,self.y+170,self.本类数据.名称)
	zts:置颜色(0xFF000000)
	 self.输入框:置坐标(self.x,self.y)
	 self.输入框:置可视(true,true)
	if self.输入框:取文本() == "" then
	 self.输入框:置文本(0)
	end
	 self.输入框:置文字颜色(引擎.取金钱颜色(tonumber(self.输入框:取文本())))
	if self.输入框:取文本()+0 > self.本类数据.道具.银两 then
	 self.输入框:置文本(self.本类数据.道具.银两)
	end
	if self.输入框._已碰撞 then
	 self.焦点 = true
	end
	 self.控件类:更新(dt,x,y)
	 self.控件类:显示(x,y)
end


return 交易界面